//package com.kyxx.topics.activity;
//
//import android.content.Context;
//import android.content.Intent;
//import android.os.Bundle;
//import android.text.TextUtils;
//import android.view.Surface;
//import android.view.SurfaceHolder;
//import android.view.SurfaceView;
//import android.view.ViewGroup;
//import android.view.WindowManager;
//import android.widget.RelativeLayout;
//import android.widget.Toast;
//
//import com.kyxx.topics.BaseActivity;
//import com.kyxx.topics.R;
////import com.letv.controller.LetvPlayer;
////import com.letv.controller.PlayContext;
////import com.letv.universal.iplay.EventPlayProxy;
////import com.letv.universal.iplay.ISplayer;
////import com.letv.universal.iplay.OnPlayStateListener;
////import com.letv.universal.play.util.PlayerParamsHelper;
////import com.letv.universal.widget.ReSurfaceView;
//
//public class PlayerActivity extends BaseActivity implements OnPlayStateListener {
//    public final static String DATA = "data";
//
//    private String path = "";
//    private PlayContext playContext;
//    private SurfaceView sv_video;
//    private ISplayer player;
//    private Bundle mBundle;
//
//    private int width;
//    private int height;
//    private int screenWidth;
//    private int screenHeight;
//
//    private RelativeLayout rl_cotainer;
//
//    private SurfaceHolder.Callback surfaceCallBack = new SurfaceHolder.Callback() {
//        @Override
//        public void surfaceCreated(SurfaceHolder holder) {
//            if (player != null) {
//                player.setDisplay(holder.getSurface());
//            } else {
//                createOnePlayer(holder.getSurface());
//            }
//        }
//
//        @Override
//        public void surfaceChanged(SurfaceHolder holder, int i, int width, int height) {
//            if (player != null) {
//                PlayerParamsHelper.setViewSizeChange(player, width, height);
//            }
//        }
//
//        @Override
//        public void surfaceDestroyed(SurfaceHolder holder) {
//            stopAndRelease();
//        }
//    };
//
//    @Override
//    protected void loadViewLayout() {
//        setContentView(R.layout.activity_player);
//    }
//
//    @Override
//    protected void findViewById() {
//        sv_video = (SurfaceView) findViewById(R.id.sv_video);
//        rl_cotainer = (RelativeLayout) findViewById(R.id.rl_cotainer);
//    }
//
//    @Override
//    protected void setListener() {
//
//    }
//
//    @Override
//    protected void processLogic() {
//        WindowManager wm = (WindowManager) getSystemService(Context.WINDOW_SERVICE);
//        screenWidth = wm.getDefaultDisplay().getWidth();
//        screenHeight = wm.getDefaultDisplay().getHeight();
//        sv_video.getHolder().addCallback(surfaceCallBack);
//        loadDataFromIntent();
//        initPlayContext();
//        createOnePlayer(null);
//    }
//
//    @Override
//    protected void onResume() {
//        super.onResume();
//        if (player != null) {
//            player.start();
//        }
//    }
//
//    @Override
//    protected void onPause() {
//        super.onPause();
//        if (player != null) {
//            player.pause();
//        }
//    }
//
//    @Override
//    protected void onDestroy() {
//        super.onDestroy();
//        if (playContext != null) {
//            playContext.destory();
//        }
//    }
//
//    private void loadDataFromIntent() {
//        Intent intent = getIntent();
//        if (intent != null) {
//            mBundle = intent.getBundleExtra(DATA);
//            if (mBundle == null) {
//                Toast.makeText(this, "no data", Toast.LENGTH_LONG).show();
//                return;
//            } else {
//                path = mBundle.getString("path");
//            }
//        }
//    }
//
//    /**
//     * 初始化PlayContext PlayContext作为播放器的上下文而存在，既保存了播放器运行时的临时数据，也记录播放器所需要的环境变量。
//     */
//    private void initPlayContext() {
//        playContext = new PlayContext(this);
//        //当前视频渲染所使用的View，可能是Surfaceview(glSurfaceView也属于Surfaceview ),也可能是textureView
//        playContext.setVideoContentView(sv_video);
//        playContext.setUsePlayerProxy(TextUtils.isEmpty(path));
//    }
//
//    private void createOnePlayer(Surface surface) {
//        player = new LetvPlayer();
//        player.setPlayContext(playContext); //关联playContext
//        player.setParameter(player.getPlayerId(), mBundle);
//        player.init();
//        player.setOnPlayStateListener(this);
//        if (surface != null) {
//            player.setDisplay(surface);
//        }
//        if (!TextUtils.isEmpty(path)) {
//            playContext.setUsePlayerProxy(false);
//        }
//        player.setDataSource(path);
//        player.prepareAsync();
//    }
//
//    @Override
//    public void videoState(int state, Bundle bundle) {
//        handleADEvent(state, bundle);// 处理广告事件
//        handleVideoInfoEvent(state, bundle);// 处理视频信息事件
//        handlePlayerEvent(state, bundle);// 处理播放器事件
//        handleLiveEvent(state, bundle);// 处理直播类事件,如果是点播，则这些事件不会回调
//    }
//
//    private void stopAndRelease() {
//        if (player != null) {
//            player.stop();
//            player.reset();
//            player.release();
//            player = null;
//        }
//    }
//
//    /**
//     * 处理视频信息类事件
//     *
//     * @param state
//     * @param bundle
//     */
//    private void handleVideoInfoEvent(int state, Bundle bundle) {
//        switch (state) {
//            case EventPlayProxy.PROXY_WAITING_SELECT_DEFNITION_PLAY:// 获取码率
//                break;
//            case EventPlayProxy.PROXY_VIDEO_INFO_REFRESH:// 获取视频信息，比如title等等
//                break;
//            case ISplayer.PLAYER_PROXY_ERROR:// 请求媒体资源信息失败
//                break;
//        }
//    }
//
//    /**
//     * 处理播放器本身事件
//     *
//     * @param state
//     * @param bundle
//     */
//    private void handlePlayerEvent(int state, Bundle bundle) {
//        switch (state) {
//
//            case ISplayer.MEDIA_EVENT_VIDEO_SIZE:
//                if (sv_video != null && player != null) {
//                    /**
//                     * 获取到视频的宽高的时候，此时可以通过视频的宽高计算出比例，进而设置视频view的显示大小。
//                     * 如果不按照视频的比例进行显示的话，(以surfaceView为例子)内容会填充整个surfaceView。
//                     * 意味着你的surfaceView显示的内容有可能是拉伸的
//                     */
//                }
//                if (sv_video instanceof ReSurfaceView) {
//                    ((ReSurfaceView) sv_video).onVideoSizeChange(
//                            player.getVideoWidth(), player.getVideoHeight());
//                }
//                width = player.getVideoWidth();
//                height = player.getVideoHeight();
//                ViewGroup.LayoutParams lp = sv_video.getLayoutParams();
//                    lp.width = screenWidth;
//                    lp.height = screenWidth * height / width;
//                sv_video.setLayoutParams(lp);
//                break;
//
//            case ISplayer.MEDIA_EVENT_PREPARE_COMPLETE:// 播放器准备完成，此刻调用start()就可以进行播放了
//                if (player != null) {
//                    player.start();
//                }
//                break;
//
//            case ISplayer.MEDIA_EVENT_FIRST_RENDER:// 视频第一帧数据绘制
//                break;
//            case ISplayer.MEDIA_EVENT_PLAY_COMPLETE:// 视频播放完成
//                break;
//            case ISplayer.MEDIA_EVENT_BUFFER_START:// 开始缓冲
//                break;
//            case ISplayer.MEDIA_EVENT_BUFFER_END:// 缓冲结束
//                break;
//            case ISplayer.MEDIA_EVENT_SEEK_COMPLETE:// seek完成
//                break;
//            case ISplayer.MEDIA_ERROR_DECODE_ERROR:// 解码错误
//                break;
//            case ISplayer.MEDIA_ERROR_NO_STREAM:// 播放器尝试连接媒体服务器失败
//                break;
//            case ISplayer.PLAYER_PROXY_ERROR:
//                int errorCode = bundle.getInt("errorCode");
//                String errorMsg = bundle.getString("errorMsg");
//                if (errorCode == EventPlayProxy.CDE_ERROR_OVERLOAD_PROTECTION) {// 过载保护处理
//                }
//                break;
//            case ISplayer.PLAYER_EVENT_PREPARE_VIDEO_VIEW:
//                break;
//            default:
//                break;
//        }
//    }
//
//    /**
//     * 处理直播类事件
//     */
//    private void handleLiveEvent(int state, Bundle bundle) {
//        switch (state) {
//            case EventPlayProxy.PROXY_SET_ACTION_LIVE_CURRENT_LIVE_ID:// 获取当前活动直播的id
//                break;
//            case EventPlayProxy.PROXY_WATING_SELECT_ACTION_LIVE_PLAY:// 当收到该事件后，用户可以选择优先播放的活动直播
//                break;
//            default:
//                break;
//        }
//    }
//
//    /**
//     * 处理广告事件
//     *
//     * @param state
//     * @param bundle
//     */
//    private void handleADEvent(int state, Bundle bundle) {
//        switch (state) {
//            case EventPlayProxy.PLAYER_PROXY_AD_START:// 广告开始
//                break;
//            case EventPlayProxy.PLAYER_PROXY_AD_END:// 广告播放结束
//                break;
//            case EventPlayProxy.PLAYER_PROXY_AD_POSITION:// 广告倒计时
//                break;
//            default:
//                break;
//        }
//    }
//}
